import hashlib
import pymysql
import uuid
from flask import Flask, request, jsonify
from dbutils.pooled_db import PooledDB
import redis

app = Flask(__name__)

# 创建连接池
pool = PooledDB(
    creator=pymysql,  # 使用 pymysql 作为数据库驱动
    maxconnections=6,  # 最大连接数
    mincached=2,  # 初始化时创建的连接
    maxcached=5,  # 连接池中最多闲置的连接
    maxshared=3,  # 连接池中最多共享的连接数
    blocking=True,  # 连接池中无可用连接时是否阻塞, 否则报错
    setsession=[],  # 开始会话前执行的命令列表
    ping=0,  # ping MySQL 服务端，检查是否服务可用
    host='localhost',
    port=3306,
    user='root',
    password='12345678',
    database='day20'
)


def fetch_one(sql, params):
    conn = pool.connection()
    cursor = conn.cursor()
    cursor.execute(sql, params)
    result = cursor.fetchone()
    cursor.close()
    conn.close()
    return result;


@app.route('/task', methods=['POST'])
def task():
    # 1.token是否为空
    ordered_string = request.json.get('ordered_string')
    if not ordered_string:
        return jsonify({'code': 400, 'message': 'ordered_string不能为空'})

    # 生成任务ID
    tid = str(uuid.uuid4())
    # 1.放入redis队伍中
    info_dic = {'tid': tid, 'data': ordered_string}
    conn = redis.Redis(host='localhost', port=6379, db=0)
    conn.lpush("test_spider_task_list", "123")
    conn.lpush("test_spider_task_list", "456")

    data = conn.rpop("test_spider_task_list")
    keys = conn.keys('*')
    print(keys)
    print(data)

    # 2.给用户返回
    return {
        'code': 200,
        'data': tid,
        'message': '正在处理中，预计1分钟完成'
    }


if __name__ == '__main__':
    app.run(host='127.0.0.1', port=5000)
